home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / lang / c-part1 / 6059 < prev    next >
Encoding:
Text File  |  1996-08-05  |  1.2 KB  |  58 lines

  1. Path: calvin.risq.qc.ca!news
  2. From: pcoulomb@criq.qc.ca (Pierre Coulombe)
  3. Newsgroups: comp.lang.c
  4. Subject: Type casting
  5. Date: 21 Feb 1996 18:17:05 GMT
  6. Organization: CRIQ
  7. Message-ID: <4gfnj1$gsc@calvin.risq.qc.ca>
  8. References: <3127dd4f.19010083@news.planet.net> <3127FF7A.6442C3B8@eden.com>
  9. NNTP-Posting-Host: pcoulomb.criq.qc.ca
  10. Mime-Version: 1.0
  11. Content-Type: Text/Plain; charset=US-ASCII
  12. X-Newsreader: WinVN 0.99.6
  13.  
  14. I have a problem with type casting in Visual C 1.5.
  15. I expected the following program to print the value 254 for valI.
  16. Instead it gives the output shown below.
  17. Can someone tell me where is my mistake ?
  18.  
  19.  
  20. ******** Program *********
  21.  
  22. #include <stdio.h>
  23. #include <string.h>
  24. #include <stdlib.h>
  25.  
  26. typedef unsigned int UINT;
  27.  
  28. #define MM_TO_UNITS 10.0F
  29.  
  30. void main(void)
  31. {
  32.   float valF;
  33.   UINT  valI;
  34.   char string[80];
  35.  
  36.   strcpy(string, "25.4");
  37.  
  38.   valI =  (UINT) ((float) atof(string) * MM_TO_UNITS);
  39.   printf("valI = %u\n", valI);
  40.  
  41.   sprintf(string, "%f", (float) atof(string) * MM_TO_UNITS);
  42.   printf("string = %s\n", string);
  43.  
  44.   strcpy(string, "25.4");
  45.   sprintf(string, "%u", (UINT) ((float) atof(string) * MM_TO_UNITS));
  46.   printf("string = %s\n", string);
  47. }
  48.  
  49.  
  50. ******** Output *********
  51.  
  52. valI = 253
  53. string = 254.000000
  54. string = 253
  55.  
  56.  
  57.  
  58.